listbase: Fix leak
authorBenjamin Otte <otte@redhat.com>
Wed, 3 Jun 2020 15:49:04 +0000 (17:49 +0200)
committerBenjamin Otte <otte@redhat.com>
Wed, 3 Jun 2020 15:49:04 +0000 (17:49 +0200)
We were leaking the temporary tracker here.

gtk/gtklistbase.c

index 8ec9bc8784f8b07843a483612d57ab73e687f874..c163ccf6fa9541e1c0b74630a87811ef6908707a 100644 (file)
@@ -1460,6 +1460,7 @@ gtk_list_base_grab_focus_on_item (GtkListBase *self,
 {
   GtkListBasePrivate *priv = gtk_list_base_get_instance_private (self);
   GtkListItemManagerItem *item;
+  gboolean success;
 
   item = gtk_list_item_manager_get_nth (priv->item_manager, pos, NULL);
   if (item == NULL)
@@ -1478,17 +1479,18 @@ gtk_list_base_grab_focus_on_item (GtkListBase *self,
       item = gtk_list_item_manager_get_nth (priv->item_manager, pos, NULL);
       g_assert (item->widget);
 
-      if (!gtk_widget_grab_focus (item->widget))
-          return FALSE;
+      success = gtk_widget_grab_focus (item->widget);
 
       gtk_list_item_tracker_free (priv->item_manager, tracker);
     }
   else
     {
-      if (!gtk_widget_grab_focus (item->widget))
-          return FALSE;
+      success = gtk_widget_grab_focus (item->widget);
     }
 
+  if (!success)
+    return FALSE;
+
   if (select)
     gtk_list_base_select_item (self, pos, modify, extend);